package util.interfaces;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;

/**
 * 对页面中form标签的处理
 * 其中：enctype="multipart/form-data" method="post"
 * @author 李东喜
 * 2009-8-7
 */
public interface IMultipartFormData {

    /**
     * 获取指定参数的值
     * @param name
     * @return
     * @author 李东喜
     * 2009-8-7
     */
    String getParameter(String name);
    
    /**
     * 用指定编码获取指定参数的值
     * @param name
     * @param encode
     * @return
     * @author 李东喜
     * 2009-8-7
     */
    String getParameter(String name, String encode);
    
    /**
     * 获取所有参数所值
     * @return String[]
     * @author 李东喜
     * 2009-8-12
     */
    String[] getParameters();
    
    /**
     * 获取指定参数的所有值
     * @param name
     * @return
     * @author 李东喜
     * 2009-8-11
     */
    String[] getParameters(String name);
    
    /**
     * 用指定编码获取指定参数的所有值
     * @param name
     * @param encode
     * @return
     * @author 李东喜
     * 2009-8-11
     */
    String[] getParameters(String name, String encode);
    
    /**
     * 获取指定参数的文件封装对象
     * @param name
     * @return
     * @author 李东喜
     * 2009-8-7
     */
    FileItem getFile(String name);
    
    /**
     * 获取所有文件的封装对象
     * @return FileItem[]
     * @author 李东喜
     * 2009-8-12
     */
    FileItem[] getFiles();
    
    /**
     * 获取指定参数的所有文件封装对象
     * @param name
     * @return
     * @author 李东喜
     * 2009-8-11
     */
    FileItem[] getFiles(String name);
    
    /**
     * 获取指定参数的所有文件封装对象
     * @param names
     * @return
     * @author 李东喜
     * 2009-8-11
     */
    FileItem[] getFiles(String[] names);
    
    /**
     * 获取所有参数的封装对象
     * @param request
     * @return
     * @author 李东喜
     * 2009-8-7
     */
    List<FileItem> getFileItems(HttpServletRequest request);
    
    /**
     * 保存指定参数的文件到指定的路径下
     * @param name
     * @param filePath 指定的路径
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFile(String name, String filePath);
    
    /**
     * 保存指定参数的文件到指定的路径下，并命名为指定文件名
     * @param name
     * @param filePath 指定的路径
     * @param rename 重新指定的文件名
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFile(String name, String filePath, String rename);
    
    /**
     * 保存指定参数的所有文件到指定的路径下
     * @param name
     * @param filePath
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFiles(String name, String filePath);
    
    /**
     * 保存指定参数的所有文件到指定的路径下
     * @param names
     * @param filePath
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFiles(String[] names, String filePath);
    
    /**
     * 保存不超过指定大小的文件到指定的路径之下
     * @param name
     * @param filePath
     * @param size
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFile(String name, String filePath, long size);
    
    /**
     * 保存不超过指定大小的文件到指定的路径之下，并重命名为指定文件名
     * @param name
     * @param filePath
     * @param rename
     * @param size
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFile(String name, String filePath, String rename, long size);
    
    /**
     * 保存不超过指定大小的所有文件到指定的路径之下
     * @param name
     * @param filePath
     * @param size
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFiles(String name, String filePath, long size);
    
    /**
     * 保存不超过指定大小的所有文件到指定的路径之下
     * @param names
     * @param filePath
     * @param size
     * @throws PlatformException
     * @author 李东喜
     * 2009-8-11
     */
    void saveFiles(String[] names, String filePath, long size);
    
}
